/** 
 * @see 该页面是查询课程表的页面
 */
const week = [
  { id: '', text: '当前周' },
  { id: '1', text: '第1周' },
  { id: '2', text: '第2周' },
  { id: '3', text: '第3周' },
  { id: '4', text: '第4周' },
  { id: '5', text: '第5周' },
  { id: '6', text: '第6周' },
  { id: '7', text: '第7周' },
  { id: '8', text: '第8周' },
  { id: '9', text: '第9周' },
  { id: '10', text: '第10周' },
  { id: '11', text: '第11周' },
  { id: '12', text: '第12周' },
  { id: '13', text: '第13周' },
  { id: '14', text: '第14周' },
  { id: '15', text: '第15周' },
  { id: '16', text: '第16周' },
  { id: '17', text: '第17周' },
  { id: '18', text: '第18周' },
  { id: '19', text: '第19周' },
  { id: '20', text: '第20周' }
]
Page({
  data: {
    weekArray: week,
    weekIndex: 0,
    pitchList: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], // 节数
    weekList: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'], // 星期几
    colorArrays: ['#f0a0a3', '#63c1e5', '#fcc978', '#98d063', '#82c1ac', '#8dabdf', '#70baad', '#5abae4'], // 课程表中的颜色块
    scheduleList: [], // 课程表的数据
	optionalCourse:[],
    bIsClassModal: false, // 是否弹出课表详情
    bIsRefresh: false, // 是否正在刷新
    classDetails: {}, // 当前课程表里面的数据内容
    appMsg: {
      type: '', // 状态
      show: false // 是否展示
    }
  },
  // 课程表接口
  onLoad () {
    this.schedule()
  },
  /**
   * @see 获取课程表数据
   */
  schedule () {
    this.setData({
      appMsg: {
        type: 'loading',
        show: true
      }
    })
    const userInfo = wx.getStorageSync('userInfo')
    const { colorArrays, weekIndex } = this.data
    const request = {
      courseType: userInfo.identityType, // 课程类别(0为教师的，1为学生的) 
      week: week[weekIndex].id // 周数(不选默认为当前时间的当前周)
    }
    wx.$API['schoolStudy/getSchedule'](request).then((response) => {
      const { data,other } = response;
	  this.setData({
		  optionalCourse:other
	  })
      if (data.length === 0) {
        this.setData({
          scheduleList: [],
          appMsg: {
            type: 'none',
            show: true
          }
        })
      } else {
        data.forEach((item, index) => {
          const lesson = item.lesson.split('-')
          item.lessonBegin = parseInt(lesson[0]) // 第几节课开始
          item.lessonEnd = parseInt(lesson[1]) // 第几节课结束
          item.lessonSum = (item.lessonEnd - item.lessonBegin) + 1 // 共有几节课
          // 每节课程表的样式
          const style = {
            marginLeft: (item.dayTime - 1) * 100,
            marginTop: (item.lessonBegin - 1) * 100,
            height: item.lessonSum * 100
          }
          item.classStyle = `
            margin-left: ${style.marginLeft}rpx;
            margin-top: ${style.marginTop}rpx;
            height: ${style.height}rpx;
            background-color: ${colorArrays[index % colorArrays.length]}
          `
          switch (item.requiredCourse) { // 是否必修状态判断
            case '1':
              item.requiredCourseText = '必修'
              break
            case '0':
              item.requiredCourseText = '非必修'
              break
            case '-1':
              item.requiredCourseText = ''
              break
            default:
              item.requiredCourseText = '无'
              break
          }
        })
        this.setData({
          scheduleList: data,
          appMsg: {
            type: 'loading',
            show: false
          }
        })
      }
    }).catch((error) => {
      this.setData({
        appMsg: {
          type: 'err',
          show: true
        }
      })
    })
  },
  /**
   * @see 选择周数
   */
  bindPickerChange (e) {
    this.setData({
      weekIndex: e.detail.value
    })
    this.schedule()
  },
  /**
   * @see 点击课程表弹出详情
   */
  handleOpenClass (e) {
    const classDetailsObj = e.currentTarget.dataset.classDetails
    if (classDetailsObj.courseName.length > 12) {
      classDetailsObj.courseName = classDetailsObj.courseName.substring(0, 12) + '…'
    }
    this.setData({
      bIsClassModal: true,
      classDetails: classDetailsObj
    })
  },
  /**
   * @see 确认课程详情
   */
  handleCloseClass () {
    this.setData({
      bIsClassModal: false
    })
  },
  /**
   * @see 接口-刷新课程表
   */
  refreshSchedule () {
    const { bIsRefresh } = this.data
    if (bIsRefresh) return
    this.setData({ bIsRefresh: true })
    wx.$API['schoolStudy/refreshSchedule']({}).then((response) => {
      this.schedule()
      setTimeout(() => {
        this.setData({ bIsRefresh: false })
      }, 1000)
    }).catch((error) => {
      this.setData({
        bIsRefresh: false,
        appMsg: {
          type: 'err',
          show: true
        }
      })
    })
  },
  /**
   * @see 点击刷新课程表
   */
  clickRefresh () {
    this.refreshSchedule()
  }
})